const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/region')
//定义模型
const provinceSchema = new mongoose.Schema({
  name: String,
});
 
const citySchema = new mongoose.Schema({
  name: String,
  province: { type: mongoose.SchemaTypes.ObjectId, ref: 'Province' } // 引用省份的ID
});
 
const districtSchema = new mongoose.Schema({
  name: String,
  city: { type: mongoose.SchemaTypes.ObjectId, ref: 'City' } // 引用城市的ID
});
//创建集合
const Province = mongoose.model('Province', provinceSchema);
const City = mongoose.model('City', citySchema);
const District = mongoose.model('District', districtSchema);
// 首先插入省份数据，并获取ID用于后续引用
const china = new Province({ name: '中国' });
china.save().then(province => {
  const beijing = new City({ name: '北京市', province: province._id }); // 使用_id引用省份ID
  beijing.save().then(city => {
    new District({ name: '东城区', city: city._id }).save(); // 使用_id引用城市ID
    new District({ name: '西城区', city: city._id }).save(); // 使用_id引用城市ID（同一城市）
  });
});
//三级联动查询
//假设你想基于选择的省份获取对应的城市和区域：
// 假设已经选择了某个省份的ID（例如：5f8e8a577e694e3c18000001）
// Province.findById('688c1cd1c0b876b1b3f3798d').then(province => {
//   City.find({ province: province._id }).then(cities => { // 获取该省份的所有城市
//     console.log(cities); // 输出城市列表，可以根据需要进一步查询每个城市的区域等。
//   });
// });
//对于三级联动，通常需要在前端根据选择的层级动态查询下一级的数据。你可以在前端应用中实现这种逻辑，每次选择后发送请求到后端以获取下一级的数据。后端则通过上述的查询逻辑来实现。例如，当选择一个城市后，发送请求到后端获取该城市的所有区域。这可以通过 REST API 或 GraphQL 等方式实现。

async function main(){
    const provinces = await Province.find()
    console.log(provinces);
}
main()